package order

import (
	"github.com/shopspring/decimal"
	"time"
)

/*
CREATE TABLE `order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_no` char(16) NOT NULL,
  `user_id` varchar(255) NOT NULL,
  `shop_id` int(11) NOT NULL,
  `place_time` datetime NOT NULL,
  `pay_method` tinyint(4) DEFAULT NULL,
  `pay_no` varchar(255) DEFAULT NULL,
  `distribution_method` tinyint(4) DEFAULT NULL,
  `distribution_time` datetime DEFAULT NULL,
  `total_amount` decimal(10,2) NOT NULL,
  `discounts_amount` decimal(10,2) NOT NULL,
  `actual_amount` decimal(10,2) NOT NULL,
  `status` tinyint(4) NOT NULL,
  `freight` decimal(10,2) NOT NULL,
  `ramark` varchar(255) DEFAULT NULL,
  `refund_status` tinyint(4) DEFAULT NULL,
  `refund_no` char(255) DEFAULT NULL,
  `item_count` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf16;
*/

type Order struct {
	Id      int
	OrderNo string // 订单编号
	UserId  string
	ShopId  int
	// place_time
	PlaceTime          time.Time       // 下单时间
	PayMethod          byte            // 支付方式
	PayNo              string          // 支付编号
	DistributionMethod byte            // 配送方式
	DistributionTime   time.Time       // 配送时间
	TotalAmount        decimal.Decimal // 支付总额
	DiscountsAmount    decimal.Decimal // 优惠金额
	ActualAmount       decimal.Decimal // 实际金额
	Freight            decimal.Decimal // 运费
	Ramark             string          // 备注
	RefundStatus       byte            // 退款状态
	RefundNo           string          // 退款编号
	Status             byte
	ItemCount          int
	GoodsDetail        []*OrderGoods `gorm:"foreignKey:OrderId"`
}

func (*Order) TableName() string {
	return "order"
}

type OrderGoods struct {
	Id              int
	OrderId         int
	SkuId           int64
	ShopId          int
	GoodsName       string
	GoodsNum        int
	GoodsPrice      decimal.Decimal
	TotalAmount     decimal.Decimal // 支付总额
	DiscountsAmount decimal.Decimal // 优惠金额
	ActualAmount    decimal.Decimal // 实际金额
}

func (*OrderGoods) TableName() string {
	return "order_goods"
}

type OrderPay struct {
	Id          int
	OrderId     int
	PayMethod   byte            // 支付方式
	TotalAmount decimal.Decimal // 支付总额
	PayParam    string          // 支付参数
	Ramark      string          // 备注
}

func (*OrderPay) TableName() string {
	return "order_pay"
}
